package modelo;

import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import controlador.ControladorCliente;

public class OuvinteCliente implements Runnable {

	BufferedReader entrada;
	ControladorCliente controladorCliente;
	List<String> clientes;

	public OuvinteCliente(BufferedReader br) {
		this.entrada = br;
		controladorCliente = ControladorCliente.getControladorCliente();
	}

	@Override
	public void run() {
		String mensagem, tipoMensagem, membrosConversa = "";
		List<String> listaMembrosConversa;

		while (true) {
			try {
				//Recebendo mensagens
				tipoMensagem = entrada.readLine();
				
				if(tipoMensagem.equals("encerramento")) {
					controladorCliente.finalizaConexoes();
					break;
				}
				if(tipoMensagem.equals("mensagem")) membrosConversa = entrada.readLine();
				
				//Tratando mensagens
				if (tipoMensagem.equals("lista")) {
					mensagem = entrada.readLine();
					clientes = new ArrayList<String>();
					clientes.addAll(Arrays.asList(mensagem.substring(1, mensagem.length() - 1).split(", ")));
					
					//atualizar tela do cliente
					controladorCliente.atualizaLista(clientes);
				} 
				else if(tipoMensagem.equals("mensagem")) {
					mensagem = entrada.readLine();
					listaMembrosConversa = Arrays.asList(membrosConversa.substring(1, membrosConversa.length() - 1).split(", "));
					controladorCliente.mensagemRecebida(listaMembrosConversa, mensagem);
				}
			} catch (IOException e) {
				e.printStackTrace();
			}

		}
	}

}
